package gormplus

import "log"

// GetOne 查询单个
func (m *Model[T]) GetOne(t T) *T {
	var result *T
	//　进行查询
	err := m.gormDB.Model(t).Where(ToNullableMap(&t)).First(&result).Error
	if err != nil {
		log.Fatal(err)
		return nil
	}
	return result
}

// GetOneBy 查询单个
func (m *Model[T]) GetOneBy(wrapper QueryWrapper) *T {
	return nil
}

// GetById 查询单个
func (m *Model[T]) GetById(id ...any) *T {
	return nil
}

// Count 统计数量
func (m *Model[T]) Count(t T) int64 {
	return 0
}

// CountBy 统计数量
func (m *Model[T]) CountBy(wrapper QueryWrapper) int64 {
	return 0
}

// ListAll 查询全部
func (m *Model[T]) ListAll() []*T {
	return nil
}

// List 查询列表
func (m *Model[T]) List(t T) []*T {
	var result []*T
	//　进行查询
	nullableMap := ToNullableMap(t)
	log.Println(nullableMap)
	err := m.gormDB.Model(t).Where(nullableMap).Find(&result).Error
	if err != nil {
		log.Fatal(err)
		return nil
	}
	return result
}

// ListBy 查询列表
func (m *Model[T]) ListBy(wrapper QueryWrapper) []*T {
	return nil
}

// ListPage 分页查询列表
func (m *Model[T]) ListPage(t T, page *Page) []*T {
	return nil
}

// ListPageBy 分页查询列表
func (m *Model[T]) ListPageBy(wrapper QueryWrapper, page *Page) []*T {
	return nil
}
